import 'package:test/test.dart';

// 入口程序
void main() {
  // test('calculate', () {
  //   expect(calculate(), 42);
  //   print('calculate test passed');
  // });

  print('main test passed');

  var a = 1;
  var b = 2;

  // 常量, 一旦赋值就不能修改
  const PI = 3.14159;
  final LOG = 2.73;

  // test('calculate', () {
  //   expect(calculate(a, b), 2);
  //   print('add test passed');
  // });

  final time = DateTime.now();
  print(time);
  print(time.year);
  print(time.month);
  print(time.day);

  // 创建一个整数数组，包含10个数值
  var list = List<int>.generate(10, (i) => i);
  // 打印数组
  print(list);

  String str = 'hello';
  String str2 = 'world';

  // 字符串拼接
  String str3 = '$str $str2';
  print(str3);

  // 拼接字符串并输出
  print('$str $str2');

  double d = 3.14159;
  double d2 = 3;

  // 打印浮点数
  print(d);
  print(d2);

  bool flag = true;
  bool flag2 = false;
  // 打印布尔值
  print(flag);
  print(flag2);

  // 创建一个字符串数组
  var list2 = ['a', 'b', 'c'];
  // 打印数组
  print(list2);

  // 这种方式创建一个空数组，但是不能添加元素
  // var list3 = List.empty();
  // var list3 = []; // 这种方式创建一个空数组，可以添加元素

  // list3.add("hello");
  // list3.add(2);
  // list3.add(true);
  // list3.add(23.45);
  // list3.add(list2);

  var list3 = List<dynamic>.filled(10, null); // 创建一个长度为10的数组，但是不能添加元素

  list3[0] = "hello";
  list3[1] = 2;
  list3[2] = true;
  list3[3] = 23.45;
  list3[4] = list2;

  for (var action in list3) {
    print(action);
  }

  int x = 10;
  int y = 45;

  print(x + y); // 加法
  print(x - y); // 减法
  print(x * y); // 乘法
  print(x / y); // 除法
  print(x % y); // 取模
  print("----------------");
  print(x > y); // 大于
  print(x < y); // 小于
  print(x == y); // 等于
  print(x != y); // 不等于
  print(x >= y); // 大于等于
  print(x <= y); // 小于等于
  print("----------------");
  print(x & y); // 与
  print(x | y); // 或
  print(x ^ y); // 异或
  print("----------------");
  print(~x); // 取反
  print(x << 2); // 左移
  print(x >> 2); // 右移

  int age = 34;
  if (age > 18) {
    print("成年人");
  } else {
    print("未成年人");
  }

  bool isAdult = age > 18;

  if (isAdult) {
    print("成年人");
  } else {
    print("未成年人");
  }

  String sex = "男";
  if (isAdult && sex == "男") {
    print("男性成年人");
  } else {
    print("其他");
  }

  int degree = 90;
  switch (degree) {
    case 90:
      print("优秀");
      break;
    case 80:
      print("良好");
      break;
    case 70:
      print("一般");
      break;
    default:
      print("不及格");
      break;
  }

  int sum = 0;
  for (int i = 0; i <= 10; i++) {
    sum += i;
  }
  print(sum);

  int i = 0;
  int sum2 = 0;
  while (i < 10) {
    sum2++;
    i++;
  }
  print(sum2);

  int j = 0;
  int sum3 = 0;
  do {
    sum3++;
    j++;
  } while (j < 10);
  print(sum3);

  print("----------------");
  // 创建一个map
  var map = {
    'name': '张三',
    'age': 18,
    'sex': '男',
  };

  // 打印map
  print(map);
}
